package br.com.estevam.sisfin.pages.cadastros;

import java.util.List;

import org.apache.tapestry5.annotations.Component;
import org.apache.tapestry5.annotations.PageActivationContext;
import org.apache.tapestry5.corelib.components.BeanEditForm;
import org.apache.tapestry5.ioc.annotations.Inject;

import br.com.estevam.sisfin.annotations.InjectSelectionModel;
import br.com.estevam.sisfin.base.DefaultPage;
import br.com.estevam.sisfin.daos.interfaces.CepDAO;
import br.com.estevam.sisfin.daos.interfaces.EstadoDAO;
import br.com.estevam.sisfin.entities.Cep;
import br.com.estevam.sisfin.entities.Estado;

public class CadastroCepAddEdit extends DefaultPage {

	@PageActivationContext
	private Cep cep;
	
	@Inject
	private EstadoDAO estadoDAO;
	
	@Inject 
	private CepDAO cepDAO;

	@Component
	private BeanEditForm beanEditForm;
	
	@InjectSelectionModel(labelField = "descricao", idField = "id")
	private List<Estado> listEstado;
	
	@SuppressWarnings("unchecked")
	void onPrepare(){
		this.listEstado = (List<Estado>) this.estadoDAO.findAll();
	}
	
	void onValidateFromCep(int cep){
		final Cep c = cepDAO.findByCep(cep);
		if(c != null && this.cep.getId() == 0){
			beanEditForm.recordError("O Banco do descrição é " + c.getEndereco() + " e " +
					"cep é " + c.getCep() + " ja está cadastrando");
		} 
	}
	
	void onValidateFromListEstado(Estado estado){
		if(estado == null){
			beanEditForm.recordError("Obrigatorio escolher um estado!");
		}
	}
	
	Class<CadastroCep> onSuccess(){
		cepDAO.addOrUpdate(cep);
		return CadastroCep.class;
	}
	
	public boolean isEdit(){
		return (this.getCep().getId() == 0 ? true : false);
	}

	public Cep getCep() {
		return cep;
	}

	public void setCep(Cep cep) {
		this.cep = cep;
	}

	public List<Estado> getListEstado() {
		return listEstado;
	}

	public void setListEstado(List<Estado> listEstado) {
		this.listEstado = listEstado;
	}
	
}
